package entidades;

import java.io.Serializable;
import javax.persistence.*;

import enumeraciones.SubTipoOptoTipoEnum;

import java.util.Date;
import java.util.Set;


/**
 * The persistent class for the t_tip_optotipo database table.
 * 
 */
@Entity
@Table(name="t_tip_optotipo")
public class TTipOptotipo  implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name="T_TIP_OPTOTIPO_IDTIPOPTOTIPO_GENERATOR", sequenceName="T_TIP_OPTOTIPO_ID_TIP_OPTOTIPO_SEQ", allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="T_TIP_OPTOTIPO_IDTIPOPTOTIPO_GENERATOR")
	@Column(name="id_tip_optotipo")
	private Integer idTipOptotipo;

	@Column(name="des_tip_optotipo")
	private String desTipOptotipo;
	
	@Column(name="sub_tip_optotipo")
	@Enumerated (value = EnumType.STRING)
	private SubTipoOptoTipoEnum desSubTipOptotipo;
	
	@Column(name="user_creacion")
	private String userCreacion;

	@Column(name="user_modificacion")
	private String userModificacion;

	@Temporal( TemporalType.TIMESTAMP)
	@Column(name="fecha_creacion")
	private Date fechaCreacion;
	
	@Temporal( TemporalType.TIMESTAMP)
	@Column(name="fecha_modificacion")
	private Date fechaModificacion;
	
	//bi-directional many-to-one association to TAgudezaVisual
	@OneToMany(mappedBy="TTipOptotipo")
	private Set<TAgudezaVisual> TAgudezaVisuals;

	@OneToMany(mappedBy="TTipoOptotipoVp")
	private Set<TAgudezaVisual> TAgudezaVisualsVp;
	
    public TTipOptotipo() {
    }

	public Integer getIdTipOptotipo() {
		return this.idTipOptotipo;
	}

	public void setIdTipOptotipo(Integer idTipOptotipo) {
		this.idTipOptotipo = idTipOptotipo;
	}

	public String getDesTipOptotipo() {
		return this.desTipOptotipo;
	}

	public void setDesTipOptotipo(String desTipOptotipo) {
		this.desTipOptotipo = desTipOptotipo;
	}

	public Set<TAgudezaVisual> getTAgudezaVisuals() {
		return this.TAgudezaVisuals;
	}

	public void setTAgudezaVisuals(Set<TAgudezaVisual> TAgudezaVisuals) {
		this.TAgudezaVisuals = TAgudezaVisuals;
	}

	@Override
	public String toString() {
		return "TTipOptotipo [idTipOptotipo=" + idTipOptotipo
				+ ", desTipOptotipo=" + desTipOptotipo + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((desTipOptotipo == null) ? 0 : desTipOptotipo.hashCode());
		result = prime * result
				+ ((idTipOptotipo == null) ? 0 : idTipOptotipo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TTipOptotipo other = (TTipOptotipo) obj;
		if (desTipOptotipo == null) {
			if (other.desTipOptotipo != null)
				return false;
		} else if (!desTipOptotipo.equals(other.desTipOptotipo))
			return false;
		if (idTipOptotipo == null) {
			if (other.idTipOptotipo != null)
				return false;
		} else if (!idTipOptotipo.equals(other.idTipOptotipo))
			return false;
		return true;
	}

	public Set<TAgudezaVisual> getTAgudezaVisualsVp() {
		return TAgudezaVisualsVp;
	}

	public void setTAgudezaVisualsVp(Set<TAgudezaVisual> tAgudezaVisualsVp) {
		TAgudezaVisualsVp = tAgudezaVisualsVp;
	}

	public SubTipoOptoTipoEnum getDesSubTipOptotipo() {
		return desSubTipOptotipo;
	}

	public void setDesSubTipOptotipo(SubTipoOptoTipoEnum desSubTipOptotipo) {
		this.desSubTipOptotipo = desSubTipOptotipo;
	}

	public String getUserCreacion() {
		return userCreacion;
	}

	public void setUserCreacion(String userCreacion) {
		this.userCreacion = userCreacion;
	}

	public String getUserModificacion() {
		return userModificacion;
	}

	public void setUserModificacion(String userModificacion) {
		this.userModificacion = userModificacion;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public Date getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}
	
}